import { unpack, pack } from 'msgpackr';

/**
 * 二进制设计稿数据格式
 * 使用 MessagePack 或自定义二进制格式进一步压缩数据
 */

/**
 * 使用 MessagePack 格式压缩设计稿数据
 * MessagePack 比 JSON 节省 20-50% 的空间
 */
export class BinaryDesignFormat {
  /**
   * 将设计稿数据编码为 MessagePack 二进制格式
   */
  static encode(designData: any): Uint8Array {
    // 需要安装 msgpackr: npm install msgpackr
    try {
      return pack(designData);
    } catch (error) {
      console.warn('MessagePack 不可用，回退到压缩 JSON');
      return new TextEncoder().encode(JSON.stringify(designData));
    }
  }

  /**
   * 从 MessagePack 二进制格式解码设计稿数据
   */
  static decode(binaryData: Uint8Array): any {
    try {
      return unpack(binaryData);
    } catch (error) {
      console.warn('MessagePack 不可用，使用 JSON 解析');
      return JSON.parse(new TextDecoder().decode(binaryData));
    }
  }
}
